broadway: Add inset shadow
authorAlexander Larsson <alexl@redhat.com>
Wed, 22 Nov 2017 08:59:22 +0000 (09:59 +0100)
committerAlexander Larsson <alexl@redhat.com>
Thu, 23 Nov 2017 09:48:29 +0000 (10:48 +0100)
gdk/broadway/broadway-protocol.h
gdk/broadway/broadway.js
gdk/broadway/broadwayd.c
gsk/gskbroadwayrenderer.c

index 4d9941793ee71be0008a308a8365ebb4816cf69a..baead88ce489332c3261de885de96f4d97e7e843 100644 (file)
@@ -14,6 +14,7 @@ typedef enum { /* Sync changes with broadway.js */
   BROADWAY_NODE_COLOR,
   BROADWAY_NODE_BORDER,
   BROADWAY_NODE_OUTSET_SHADOW,
+  BROADWAY_NODE_INSET_SHADOW,
 } BroadwayNodeType;
 
 typedef enum {
index 89e4e9da658d9e479660f96bfe5dd3bb07da3487..926f56bda52fb3a858b717d726fa2f1030fdcece 100644 (file)
@@ -492,6 +492,23 @@ SwapNodes.prototype.handle_node = function(parent)
         }
         break;
 
+    case 5:  // INSET_SHADOW
+        {
+            var rrect = this.decode_rounded_rect();
+            var color = this.decode_color();
+            var dx = this.decode_float();
+            var dy = this.decode_float();
+            var spread = this.decode_float();
+            var blur = this.decode_float();
+
+            var div = document.createElement('div');
+            div.style["position"] = "absolute";
+            set_rrect_style(div, rrect, null);
+            div.style["box-shadow"] = args("inset", px(dx), px(dy), px(blur), px(spread), color);
+            parent.appendChild(div);
+        }
+        break;
+
     default:
         alert("Unexpected node type " + type);
     }
index de3d6282657b845a37cfb0999f30770f45aa2eb9..c54f86b4bfcfde1edf5f8f405780ca72db96747f 100644 (file)
@@ -239,6 +239,7 @@ rewrite_node_textures (BroadwayClient *client,
   case BROADWAY_NODE_BORDER:
     pos += NODE_SIZE_RRECT + 4 * NODE_SIZE_FLOAT + 4 * NODE_SIZE_COLOR;
     break;
+  case BROADWAY_NODE_INSET_SHADOW:
   case BROADWAY_NODE_OUTSET_SHADOW:
     pos += NODE_SIZE_RRECT + NODE_SIZE_COLOR + 4 * NODE_SIZE_COLOR;
     break;
index c89f1848e59cdf6f742e5a857edfaf35f9716f53..7a19185c320db40cd5e3873e28161e8b222400c3 100644 (file)
@@ -210,6 +210,18 @@ gsk_broadway_renderer_add_node (GskRenderer *self,
       }
       return;
 
+    case GSK_INSET_SHADOW_NODE:
+      {
+        add_uint32 (nodes, BROADWAY_NODE_INSET_SHADOW);
+        add_rounded_rect (nodes, gsk_inset_shadow_node_peek_outline (node));
+        add_rgba (nodes, gsk_inset_shadow_node_peek_color (node));
+        add_float (nodes, gsk_inset_shadow_node_get_dx (node));
+        add_float (nodes, gsk_inset_shadow_node_get_dy (node));
+        add_float (nodes, gsk_inset_shadow_node_get_spread (node));
+        add_float (nodes, gsk_inset_shadow_node_get_blur_radius (node));
+      }
+      return;
+
     default:
       {
         cairo_surface_t *surface;